bitkeeper revision 1.1702 (42a86f65gBB_DT3imKRA_tkGBTiKQA)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 9 Jun 2005 16:33:41 +0000 (16:33 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 9 Jun 2005 16:33:41 +0000 (16:33 +0000)
Fix io_apic -> i8259 irq handling transition.
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/i8259.c
xen/arch/x86/io_apic.c
xen/arch/x86/irq.c
xen/include/asm-x86/irq.h

index 17128adc35f7ba2643fd60149bfd0516c5c0f30c..7fc9340d78a309fd87fd33335fd64e1eca450483 100644 (file)
@@ -204,13 +204,6 @@ int i8259A_irq_pending(unsigned int irq)
     return ret;
 }
 
-void make_8259A_irq(unsigned int irq)
-{
-    disable_irq_nosync(irq);
-    io_apic_irqs &= ~(1<<irq);
-    enable_irq(irq);
-}
-
 /*
  * This function assumes to be called rarely. Switching between
  * 8259A registers is slow.
index f41de09f1a05dc154f42fca14f4341cc7093b920..470cf3b5934d4dcb349fe5982319d9f0bf31e81e 100644 (file)
@@ -34,6 +34,8 @@
 #include <mach_apic.h>
 #include <io_ports.h>
 
+#define make_8259A_irq(irq) (io_apic_irqs &= ~(1<<(irq)))
+
 int (*ioapic_renumber_irq)(int ioapic, int irq);
 atomic_t irq_mis_count;
 
@@ -1278,8 +1280,8 @@ static struct hw_interrupt_type ioapic_level_type = {
 static inline void init_IO_APIC_traps(void)
 {
     int irq;
-    for (irq = 0; irq < NR_IRQS ; irq++)
-        if (IO_APIC_IRQ(irq) && !IO_APIC_VECTOR(irq) && (irq < 16))
+    for (irq = 0; irq < 16 ; irq++)
+        if (IO_APIC_IRQ(irq) && !IO_APIC_VECTOR(irq))
             make_8259A_irq(irq);
 }
 
index 7307e9bead8fc2b9ea0a2b532d3b89d209548b69..92b51f7d6ef458425f77907911698b9724aa3ba3 100644 (file)
@@ -44,42 +44,6 @@ struct hw_interrupt_type no_irq_type = {
 
 atomic_t irq_err_count;
 
-inline void disable_irq_nosync(unsigned int irq)
-{
-    unsigned int  vector = irq_to_vector(irq);
-    irq_desc_t   *desc = &irq_desc[vector];
-    unsigned long flags;
-
-    spin_lock_irqsave(&desc->lock, flags);
-
-    if ( desc->depth++ == 0 )
-    {
-        desc->status |= IRQ_DISABLED;
-        desc->handler->disable(vector);
-    }
-
-    spin_unlock_irqrestore(&desc->lock, flags);
-}
-
-void enable_irq(unsigned int irq)
-{
-    unsigned int  vector = irq_to_vector(irq);
-    irq_desc_t   *desc = &irq_desc[vector];
-    unsigned long flags;
-
-    spin_lock_irqsave(&desc->lock, flags);
-
-    if ( --desc->depth == 0 )
-    {
-        desc->status &= ~IRQ_DISABLED;
-        if ( (desc->status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING )
-            desc->status |= IRQ_REPLAY;
-        desc->handler->enable(vector);
-    }
-
-    spin_unlock_irqrestore(&desc->lock, flags);
-}
-
 asmlinkage void do_IRQ(struct cpu_user_regs *regs)
 {
     unsigned int      vector = regs->entry_vector;
index 8ebbeb184ac02aac6fd5bbafdd4a4fabd34d682d..07f9d32ccf2a044ca4b48102d6324a61cd01f7b8 100644 (file)
@@ -18,9 +18,6 @@
     (IO_APIC_IRQ(irq) ? IO_APIC_VECTOR(irq) : LEGACY_VECTOR(irq))
 #define vector_to_irq(vec)  (vector_irq[vec])
 
-extern void disable_irq_nosync(unsigned int);
-extern void enable_irq(unsigned int);
-
 extern int vector_irq[NR_VECTORS];
 extern u8 irq_vector[NR_IRQ_VECTORS];
 #define AUTO_ASSIGN             -1
@@ -30,7 +27,6 @@ extern u8 irq_vector[NR_IRQ_VECTORS];
 void disable_8259A_irq(unsigned int irq);
 void enable_8259A_irq(unsigned int irq);
 int i8259A_irq_pending(unsigned int irq);
-void make_8259A_irq(unsigned int irq);
 void init_8259A(int aeoi);
 
 void setup_IO_APIC(void);